---
title: "Ejemplo modelado de regresión lineal con R (Tidyverse+Rmarkdown)"
author:
    - Jesús Manuel Nieto Carracedo (jesusmanuel.nieto@etani.es)
date: "30/11/2020"
---output: html_document
output: pdf_document
header-includes: \usepackage{color}
editor_options: 
  chunk_output_type: inline
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```

```{r load,  include=FALSE}
# Cargamos las librerías 
library(tidyverse)
```

## Modelo predictivo basado en recta de regresión lineal

```{=tex}
\vspace{12pt}
```
[**Tecnología empleada:**]{.ul}

-   Lenguajes de programación:

    -   Análisis de datos: \textcolor{blue}{R}
    -   Maquetación del documento: \textcolor{blue}{RMarkdown}
    -   Maquetación de las fórmulas: \textcolor{blue}{Latex}

-   Librerías:

    -   Agrupa a las siguientes: \textcolor{blue}{Tidyverse}
    -   Gráficos: \textcolor{blue}{ggplot2}
    -   Datos: \textcolor{blue}{ggplot2::mpg}

```{r chk0, echo=FALSE}
n_short <- 11
n       <- mpg %>% summarise(total = n())
```

```{=tex}
\vspace{12pt}
```
[**Planteamiento:**]{.ul}

Partimos del siguiente **dataframe** llamado **mpg** el cual contiene datos de economía de combustible de 1999 a 2008 para 38 modelos de vehículos más populares del mercado estadounidense. En ella queremos ver si hay relación directa entre el tamaño de un motor **displ** (cilindrada del motor en litros) y el número de millas de carretera por galón de combustible **hwy**. A priori, todo parece indicar que deber de existir. En este caso queremos estudiar **la variable dependiente displ(eje vertical) frente a la independiente hwy (eje horizontal)**

Para ello en esta tabla mostraremos **`r n_short`** de **`r n`** observaciones en total, para ver el formato de la misma:

```{r chk1, echo=FALSE}
knitr::kable(head(mpg,n_short),
caption="Dataframe mpg")
```

Para este estudio, nos vamos a olvidar del modelo, tipo de coche, y de la marca, aunque debería ser relevante, ya que un motor de 2 litros de Dodge, es probable que consuma diferente a un 2 litros de Audi. Esta información es relevante, para anlizar los outliers, ya que habría que explorar el gráfico por marca y/o clase. Vamos a realizar un primer análisis exploratorio, mostrando una **nube de puntos**, un **diagrama de dispersión**, donde ya deberíamos poder intuir que aspecto tiene, y colocamos una tercera dimensión de variable, al introducir un color por marca, esto ya nos ayuda a ver que los outliers pertenecen a una marca casi en su totalidad, lo cual nos permitiría estudiar al grupo común por un lado y luego explicar cada grupo de outliers por separado.

Recordar que vamos a buscar la recta de regresión para la totalidad de la población:

```{r chk2, echo=FALSE}
ggplot(data = mpg) +
	geom_point(mapping = aes(x = hwy, y = displ, color = manufacturer))
```

Bueno, ya se van viendo detalles, se ve claramente un patrón, de relación indirecta o inversa, es decir, como era de esperar, aunque hay algunos outliers que tendrían que estudiarse, en este ejercicio me olvido de ellos, se observa que, a mayor cilindrada, menos millas por carretera.

```{=tex}
\vspace{12pt}
```
[**Estadística descriptiva de variable displ:**]{.ul}

Vamos a realizar ahora los cálculos necesarios para la recta de regresión:

```{r chk3, echo=FALSE}
displ.mean <- mean(mpg$displ)
displ.sd   <- sd(mpg$displ)
```

-   \textcolor{blue}{Media displ} -\> `r displ.mean`
-   \textcolor{blue}{Desviación típica displ} -\> `r displ.sd`

```{=tex}
\vspace{12pt}
```
[**Estadística descriptiva de variable hwy**]{.ul}

Vamos a realizar ahora los cálculos necesarios para la recta de regresión:

```{r chk4, echo=FALSE}
hwy.mean <- mean(mpg$hwy)
hwy.sd   <- sd(mpg$hwy)
```

-   \textcolor{blue}{Media hwy} -\> `r hwy.mean`
-   \textcolor{blue}{Desviación típica hwy} -\> `r hwy.sd`
```{=tex}
\vspace{12pt}
```
[**Desviación estándar conjunta** $s_{x,y}$]{.ul}

Para calcular la desviación estándar conjunta $s_{x,y}$, haremos uso de la fórmula:

$s_{x,y} = \frac{1}{n}\displaystyle\sum_{i=1}^{n}(x_{i} - \overline{x})(y_{i} - \overline{y})$

```{r chk5, echo=FALSE}
mpg %>%
    mutate(
        sxyi = (hwy - mean(hwy)) * (displ - mean(displ))
    ) -> mpg_sxy
sxy <-mean(mpg_sxy$sxyi)
```

-   \textcolor{blue}{Desviación estándar conjunta} $s_{x,y}$ -\> `r sxy`
```{=tex}
\vspace{12pt}
```
[**Coeficiente de correlación conjunta** $r_{x,y}$]{.ul}

Ahora que tenemos la **media**, la **desviación estándar individual y conjunta**, vamos a calcular el **coeficiente de correlación lineal de Pearson:**, mediante la fórmula: 

$r_{x,y} = \frac{s_{x,y}}{s_{x}*s_{y}}$.

```{r chk6, echo=FALSE}

rxy <-sxy / (hwy.sd*displ.sd) 
```

-   \textcolor{blue}{Coeficiente de correlación lineal de Pearson} $r_{x,y}$ -\> `r rxy` Dado que es un valor negativo y cercano a -1, podríamos decir que tiene una relación **fuerte e inversa** al estar en el rango **[-1,1]** y por tanto si existe una relación lineal.
```{=tex}
\vspace{12pt}
```
[**Cálculo de la recta de regresión**]{.ul}

Para finalizar, ya tenemos todos los datos, para calcular la **recta de regresión**: 

$y=\beta_0 + \beta_1x$

Donde calcularemos el **intercepto** con:

$\beta_0= \overline{y} - \beta_1 \overline{x}$

Y cuya **pendiente de la recta** será:

$\beta_1=r_{x,y} \frac{s_{y}}{s_{x}}$

```{r chk7, echo=FALSE}

b1 <-rxy * ( displ.sd/ hwy.sd)
b0 <-displ.mean - ( b1 * hwy.mean) 
```

-   \textcolor{blue}{Intercepto} $\beta_0$ -\> `r b0`
-   \textcolor{blue}{Pendiente de la recta} $\beta_1$ -\> `r b1`
-   y = `r b0` `r b1`x
```{=tex}
\vspace{12pt}
\pagebreak
```
[**Representación gráfica del modelo**]{.ul}

En la siguiente gráfica podremos observar como se define una recta que pintamos de color rojo, que indica la tendencia lineal inversa del modelo. 

```{r chk8, echo=FALSE}
ggplot(data = mpg) +
	geom_point(mapping = aes(x = hwy, y = displ))+
    geom_abline(intercept = b0, slope = b1, color="red", size=1.5)
```
```{=tex}
\vspace{12pt}
```
[**Nota final**]{.ul}

El lenguaje de programación para estadística **R** dispone de una función llamada **lm()** la cual nos permite generar de forma *automágica* modelos re regresión lineal, pero dado que el objetivo del presente documento es realizar el cálculo del modelo de forma manual, no se ha hecho uso del mismo. Para más información puedes dirigirte a la url [linear-regression-in-r/](http://www.learnbymarketing.com/tutorials/linear-regression-in-r)